基于 mjLab 仿真的宇树 G1 强化学习示例

环境搭建

先根据需求安装 miniconda:

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

此后初始化 Conda:

~/miniconda3/bin/conda init --all
source ~/.bashrc

然后用 Conda 创建一个新的环境并启用:

conda create -n unitree_rl_mjlab python=3.11
conda activate unitree_rl_mjlab

在运行完成没有错误后,从 GitHub 拉取 Unitree_rl_mjlab 项目:

git clone https://github.com/unitreerobotics/unitree_rl_mjlab.git

然后对其安装依赖:

sudo apt install -y libyaml-cpp-dev libboost-all-dev libeigen3-dev libspdlog-dev libfmt-dev

cd unitree_rl_mjlab
pip install -e .

上面的步骤可能会花费很长时间。

训练模型

python scripts/train.py Unitree-G1-Flat --env.scene.num-envs=4096

第一个参数(例如 Mjlab-Velocity-Flat-Unitree-G1)指定了训练任务。可用的速度跟踪任务:

  • Unitree-Go2-Flat
  • Unitree-G1-Flat
  • Unitree-G1-23Dof-Flat
  • Unitree-H1_2-Flat
  • Unitree-A2-Flat
  • Unitree-R1-Flat

另一个可以用来训练的模型:

python scripts/csv_to_npz.py \
--input-file src/assets/motions/g1/dance1_subject2.csv \
--output-name dance1_subject2.npz \
--input-fps 30 \
--output-fps 50

NPZ 文件将存储在:src/motions/g1/...

生成 NPZ 文件后,启动模拟训练:

python scripts/train.py Unitree-G1-Tracking --motion_file=src/assets/motions/g1/dance1_subject2.npz --env.scene.num-envs=4096

仿真验证

python scripts/play.py Unitree-G1-Flat --checkpoint_file=logs/rsl_rl/g1_velocity/2026-xx-xx_xx-xx-xx/model_xx.pt
python scripts/play.py Unitree-G1-Tracking --motion_file=src/assets/motions/g1/dance1_subject2.npz --checkpoint_file=logs/rsl_rl/g1_tracking/2026-xx-xx_xx-xx-xx/model_xx.pt

其中具体的模型名称 model_xx.pt 及其路径需要根据情景进行修改。

参考链接

Unitree RL mjLab

Last modified: 2026-05-24